import type { MenuDataItem } from "@/constants";
import type { RouteObject } from "react-router-dom";
/**
 * 根据菜单数据过滤权限路由
 * @param routes 权限路由树tree
 * @param menuList 权限菜单数据list
 * @returns
 */
export function filterRoutesByMenuList(routes: RouteObject[], menuList: MenuDataItem[]) {
  // 创建一个Set以便快速检查菜单项是否存在
  const menuSet = new Set(menuList.map((item) => item.path));
  return routes.filter((route) => {
    // 检查当前路由的路径是否在菜单列表中
    if (!menuSet.has(route.path!)) {
      return false; // 如果不在，则排除该路由
    }
    // 如果路由有子路由，则递归过滤子路由
    if (route.children && route.children.length) {
      route.children = filterRoutesByMenuList(route.children, menuList);
      // 如果过滤后子路由为空，则排除该路由
      if (route.children.length === 0) {
        return false;
      }
    }
    // 保留在菜单列表中的路由
    return true;
  });
}
